#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
//#define N 10

//template<class T, size_t N>
//class A
//{
//public:
//
//private:
//	T* _a[N];
//};
//
//void test_1()
//{
//	A<int, 10> a1;
//	A<double, 100> a2;
//}

template<class T1, class T2>
class Data
{
public:
	Data()
	{
		std::cout << "Data<T1, T2>" << std::endl;
	}
private:
	T1 _d1;
	T2 _d2;
};

template<>
class Data<int, char>
{
public:
	Data()
	{
		std::cout << "Data<int, char>" << std::endl;
	}
private:
	int _d1;
	char _d2;
};


void test_2()
{
	Data<int, int> d1;
	Data<int, char> d2;

}

class Date
{
public:
	bool operator<(Date d)
	{
		return 0;
	}
};

template<class T>
class Less
{
	bool operator()(const T& left, const T& right)
	{
		return left < right;
	}
};


template<>
class Less<Date*>
{
	bool operator()(Date* const& left, Date* const& right)
	{
		return *left < *right;
	}
};

int main()
{
	//test_1();
	test_2();

	return 0;
}

